//package U_V.OEU.LYG4DQS4D;
//
//import S_A.pheromone.IMV_SQI;
//
//import java.util.Map;
////作者+ 个人著作权人： 罗瑶光, 浏阳,
/*
// * 个人著作权人, 作者 罗瑶光, 浏阳
// * yaoguangluo@outlook.com, 313699483@qq.com, 2080315360@qq.com, -
// ** 15116110525-浏阳德塔软件开发有限公司-创始人-法人-总经理-永久非盈利-
// * 430181198505250014, G24402609, EB0581342
// * 204925063, 389418686, F2406501, 0626136
// * 湖南省 浏阳市 集里街道 神仙坳社区 大塘冲路一段
*  208号 阳光家园别墅小区 第十栋别墅 第三层
// * */
//public class LYG5DWithChineseMixStringSort8D{
//	Map<String, Boolean> find= new IMV_SQI();
//	Map<String, String> pinyin;
//	int range;
//	int deeps;
//	public void quick4DChineseStringArray(String[] strings, int leftPosition
//			, int rightPosition, int scale, Map<String, String> map, int range, int deeps) {
//		this.pinyin= map;
//		this.range= range;
//		this.deeps= deeps;
//		processKernel(strings, leftPosition, rightPosition, scale, 0);
//	}
//
//	private void processKernel(String[] kernel, int leftPosition
//			, int rightPosition, int scale, int point) {
//		int rightPositionReflection= rightPosition;
//		if(point> scale) {
//			return;
//		}
//		processQS4DLYG5D(kernel, leftPosition, rightPosition, scale, point, 0);
//		int i;
//		for(i= leftPosition; i<= rightPosition; i++) {
//			if(!(kernel[i].length()<= point|| kernel[leftPosition].length()<= point)) {
//				if(kernel[i].charAt(point)!= kernel[leftPosition].charAt(point)){
//					rightPositionReflection= i- 1;
//					processKernel(kernel, leftPosition, rightPositionReflection
//							, scale, point+ 1);
//					leftPosition= i;
//				}
//			}
//		}
//		if(leftPosition!= rightPosition) {
//			processKernel(kernel, leftPosition, i- 1, scale, point+ 1);
//		}
//	}
//
//	private void processSort(String[] kernel, int leftPosition
//			, int rightPosition, int scale, int point) {
//		if(point> scale) {
//			return;
//		}
//		for(int i= leftPosition; i<= rightPosition; i++) {
//			Here:
//				for(int j= i; j<= rightPosition; j++) {
//					if(i== j) {
//						continue Here;
//					}
//					if(kernel[i].length()<= point|| kernel[j].length()<= point) {
//						if(kernel[i].length()< kernel[j].length()) {
//							for(int p= 0; p< scale; p++) {
//								if(!(kernel[i].length()<= p|| kernel[j].length()<= p)) {
//									if(kernel[i].charAt(p)!= kernel[j].charAt(p)) {
//										continue Here;
//									}
//								}
//							}
//							String temp= kernel[i].toString();
//							kernel[i]= kernel[j].toString();
//							kernel[j]= temp;
//						}
//						continue Here;
//					}else {
//						boolean hasXi= pinyin.containsKey(""+ kernel[i].charAt(point));
//						boolean hasXj= pinyin.containsKey(""+ kernel[j].charAt(point));
//						if(!(!hasXi|| !hasXj)){
//							String[] js= new String[2];
//							js[0]= this.pinyin.get(""+ kernel[i].charAt(point));
//							js[1]= this.pinyin.get(""+ kernel[j].charAt(point));
//							boolean change= processSortPinYin(js, 3);
//							if(!(!change|| i>= j)) {
//								String temp= kernel[i].toString();
//								kernel[i]= kernel[j].toString();
//								kernel[j]= temp;
//							}
//							continue Here;
//						}else if(!(hasXi|| !hasXj)){
//							if(i< j) {
//								if(!(i== rightPosition+1 || j== rightPosition+1)) {
//									String temp= kernel[i].toString();
//									kernel[i]= kernel[j].toString();
//									kernel[j]= temp;
//								}
//							}
//							continue Here;
//						}else if(!(hasXi|| hasXj)){
//							if(kernel[i].toLowerCase().charAt(point)
//									> kernel[j].toLowerCase().charAt(point)) {
//								if(i< j) {
//									String temp= kernel[i].toString();
//									kernel[i]= kernel[j].toString();
//									kernel[j]= temp;
//								}
//								continue Here;
//							}
//							if(kernel[i].toLowerCase().charAt(point)
//									== kernel[j].toLowerCase().charAt(point)) {
//								if(kernel[i].charAt(point)> kernel[j].charAt(point)) {
//									if(i< j) {
//										String temp= kernel[i].toString();
//										kernel[i]= kernel[j].toString();
//										kernel[j]= temp;
//									}
//								}
//							}
//						}
//					}
//				}
//		}
//	}
//
//	private void processQS4DLYG5D(String[] kernel, int leftPosition
//			, int rightPosition, int scale, int point, int deep) {
//		if(leftPosition< rightPosition){
//			int c= rightPosition- leftPosition;
//			if(!(c > this.range|| deep> this.deeps)) {//增加了deep
//				processSort(kernel, leftPosition, rightPosition, scale, point);
//				return;
//			}
//			int pos= partition(kernel, leftPosition, rightPosition, scale, point);
//			processQS4DLYG5D(kernel, leftPosition, pos- 1, scale, point, deep+ 1);
//			processQS4DLYG5D(kernel, pos+ 1, rightPosition, scale, point, deep+ 1);
//		}
//	}
//
//	private boolean findSmall(String[] kernel, int scale, int point
//			, int i, int j, int rightPosition) {
//		if(kernel[i].length()<= point|| kernel[j].length()<= point) {
//			if(kernel[i].length()< kernel[j].length()) {
//				for(int p= 0; p< scale; p++) {
//					if(!(kernel[i].length()<= p|| kernel[j].length()<= p)) {
//						if(kernel[i].charAt(p)!= kernel[j].charAt(p)) {
//							return false;
//						}
//					}
//				}
//				return true;
//			}
//			return false;
//		}else {
//			boolean hasXi= pinyin.containsKey(""+ kernel[i].charAt(point));
//			boolean hasXj= pinyin.containsKey(""+ kernel[j].charAt(point));
//			if(!(!hasXi|| !hasXj)){
//				String[] js= new String[2];
//				js[0]= this.pinyin.get(""+ kernel[i].charAt(point));
//				js[1]= this.pinyin.get(""+ kernel[j].charAt(point));
//				boolean change= processSortPinYin(js, 3);
//				if(!(!change|| i>= j)) {
//					return true;
//				}
//				return false;
//			}else if(!(hasXi|| hasXj)){
//				if(kernel[i].toLowerCase().charAt(point)
//						> kernel[j].toLowerCase().charAt(point)) {
//					if(i< j) {
//						return true;
//					}
//					return false;
//				}else if(kernel[i].toLowerCase().charAt(point)
//						== kernel[j].toLowerCase().charAt(point)) {
//					if(kernel[i].charAt(point)> kernel[j].charAt(point)) {
//						if(i< j) {
//							return true;
//						}
//						return false;
//					}
//					return false;
//				}
//				return false;
//			}else if(!(hasXi|| !hasXj)){
//				if(i< j) {
//					if(!(i== rightPosition || j== rightPosition)) {
//						return true;
//					}
//					return false;
//				}
//				return false;
//			}
//		}
//		return false;
//	}
//
//	private boolean findSmallWithTwoChar(String x1, String x2
//			, int scale, int point) {
//		if(x1.length()<= point|| x2.length()<= point) {
//			if(x1.length()< x2.length()) {
//				for(int p= 0; p< scale; p++) {
//					if(!(x1.length()<= p|| x2.length()<= p)) {
//						if(x1.charAt(p)!= x2.charAt(p)) {
//							return false;
//						}
//					}
//				}
//				return true;
//			}
//			return false;
//		}else {
//			boolean hasX1= pinyin.containsKey(""+ x1.charAt(point));
//			boolean hasX2= pinyin.containsKey(""+ x2.charAt(point));
//			if(!(!hasX1|| !hasX2)){
//				String[] js= new String[2];
//				js[0]= this.pinyin.get(""+ x1.charAt(point));
//				js[1]= this.pinyin.get(""+ x2.charAt(point));
//				boolean change= processSortPinYin(js, 3);
//				if(change) {
//					return true;
//				}
//				return false;
//			}else if(!(hasX1|| hasX2)){
//				if(x1.toLowerCase().charAt(point)> x2.toLowerCase().charAt(point)) {
//					return true;
//				}else if(x1.toLowerCase().charAt(point)
//						== x2.toLowerCase().charAt(point)) {
//					if(x1.charAt(point)> x2.charAt(point)) {
//						return true;
//					}
//					return false;
//				}
//				return false;
//			}else if(!(hasX1|| !hasX2)){
//				return true;
//			}
//		}
//		return false;
//	}
//
//	private int partition(String[] array, int leftPosition, int rightPosition
//			, int scale, int point) {
//		String x= findSmall(array, scale, point, leftPosition, rightPosition
//				, rightPosition)
//				? array[rightPosition]: array[leftPosition];
//		int leftPositionReflection= leftPosition;
//		int count= 0;
//		int lastCount= 0;
//		while(leftPositionReflection< rightPosition) {
//			while(!(findSmallWithTwoChar(array[leftPositionReflection]
//					, x, scale, point)|| leftPositionReflection>= rightPosition)) {
//				leftPositionReflection++;
//				count++;
//			}
//			while(findSmallWithTwoChar(array[rightPosition], x, scale, point)){
//				rightPosition--;
//				count++;
//			}
//			if(leftPositionReflection< rightPosition){
//				String temp= array[rightPosition].toString();
//				array[rightPosition]= array[leftPositionReflection].toString();
//				array[leftPositionReflection]= temp;
//			}
//			if(count!= lastCount) {
//				lastCount= count;
//			}else {
//				rightPosition--;
//			}
//		}
//		array[leftPosition]= array[rightPosition].toString();
//		array[rightPosition]= x;
//		return rightPosition;
//	}
//
//	private boolean processSortPinYin(String[] kernel, int scale) {
//		for(int k= 0; k< scale; k++) {
//			if(kernel[0].length()<= k|| kernel[1].length()<= k) {
//				if(kernel[0].length()< kernel[1].length()) {
//					return true;
//				}
//				return false;
//			}
//			if(kernel[0].toLowerCase().charAt(k)
//					> kernel[1].toLowerCase().charAt(k)) {
//				return true;
//			}
//			if(kernel[0].toLowerCase().charAt(k)
//					< kernel[1].toLowerCase().charAt(k)) {
//				return false;
//			}
//		}
//		if(kernel[0].length()< kernel[1].length()) {
//			return true;
//		}
//		return false;
//	}
//}
